package com.coolcard.framework.exception;

import org.springframework.http.HttpStatus;
import org.springframework.http.ProblemDetail;

/**
 * 自定义错误信息类
 * - 用于自定义返回的错误信息
 */
public class CustomProblemDetail extends ProblemDetail {

    /**
     * 主要构造函数
     * - 通过错误码获取状态码和错误信息标题
     *
     * @param errorCode 错误码
     * @param detail    错误信息
     */
    public CustomProblemDetail(ErrorCode errorCode, String detail) {
        this(errorCode.getStatus(), errorCode.getCode(), errorCode.getTitle(), detail);
    }


    public CustomProblemDetail(ErrorCode errorCode) {
        this(errorCode, "");
    }


    /**
     * 实际构造函数
     * - 为适应多种前端接口返回格式，将 title 复制为 message，将 detail 复制为 data
     *
     * @param status 状态码
     * @param code   错误码
     * @param title  错误信息标题
     * @param detail 错误信息详情
     */
    public CustomProblemDetail(HttpStatus status, int code, String title, String detail) {
        super(ProblemDetail.forStatusAndDetail(status, detail));
        this.setTitle(title);
        this.setProperty("code", code);
        this.setProperty("message", title);
        this.setProperty("data", detail);
    }
}
